﻿using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Text;

namespace test.parser
{
    [TestClass]
    public class UnitTest_ttlang
    {
        [TestMethod]
        public void simpleNumber()
        {
            var parser = dumptool.GetParserInfo<ttparser.ttlangLexer, ttparser.ttlangParser>("expr");
            var rc = parser.Parse(@"0 
                            0", true, true, true);
            parser.Parse("123" +
                "        3", true, true, true);
            parser.Parse("(123.4+1*2+-3);", true, true, true);
            parser.Parse("57.4444", true, true, true);
        }
        [TestMethod]
        public void comment()
        {
            var parser = dumptool.GetParserInfo<ttparser.ttlangLexer, ttparser.ttlangParser>("root");
            var rc =parser.Parse(@"337//nihao 
                            0", true, true, true);
            parser.Parse("123" +
                "//        3", true, true, true);
            parser.Parse("//(123.4+1*2+-3);", true, true, true);
            parser.Parse("/*5*/7.4444", true, true, true);
        }
        [TestMethod]
        public void title()
        {
            var parser = dumptool.GetParserInfo<ttparser.ttlangLexer, ttparser.ttlangParser>("root");
            var rc = parser.Parse(@"#337//nihao 
                            0", true, true, true);
            parser.Parse("#123" +
                "//        3", true, true, true);
            parser.Parse("#nihao//(123.4+1*2+-3);", true, true, true);
            parser.Parse("#hi/*5*/7.4444", true, true, true);
        }
        [TestMethod]
        public void valuedef()
        {
            var parser = dumptool.GetParserInfo<ttparser.ttlangLexer, ttparser.ttlangParser>("root");
            parser.Parse(@"var a:int = 3;
                           var a:aa=4;", true, true, true);
            parser.Parse(@"var d:abc= 3;
                           var a:aa;", true, true, true);
        }

        [TestMethod]
        public void methoddef()
        {
            var parser = dumptool.GetParserInfo<ttparser.ttlangLexer, ttparser.ttlangParser>("root");
            parser.Parse(@"a():int{};
                           a:aa=4;
                           ", true, true, true);
            parser.Parse(@"d:abc= 3;
                           bbb:void(){return 2;};
                           ", true, true, true);
            parser.Parse(@"d:abc= 3;
                           bbb(int a,string b){return a+3;};
                           ", true, true, true);
        }

        [TestMethod]
        public void methoddef2()
        {

            var parser = dumptool.GetParserInfo<ttparser.ttlangLexer, ttparser.ttlangParser>("root");
            parser.Parse(@"main():void
                {
                    int a=0;
                    for(var i = 0; i<1000000;i++)
                    {
                        a+=i;
                    }
                    print(a);
                }

                           ", true, true, true);

        }
    }
}
